/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.FornecedorDAO;
import dao.LogradouroDAO;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.FornecedorMODEL;
import model.LogradouroMODEL;
import table.fornecedor.FornecedorTable;

/**
 *
 * @author WELISSON
 */
public class FornecedorController {

    public boolean salvar(String razao, String nome, String cnpj, String tel,
            String ramal, String email, int logradouro, String num, FornecedorTable tbm) {
        FornecedorMODEL fornecedor = new FornecedorMODEL();
        fornecedor.setRazaoSocial(razao);
        fornecedor.setNome(nome);
        fornecedor.setCnpj(cnpj);
        fornecedor.setTel(tel);
        fornecedor.setRamal(ramal);
        fornecedor.setEmail(email);
        fornecedor.setLogradouro(logradouro);
        fornecedor.setNum(num);

        try {
            int id = new FornecedorDAO().salvar(fornecedor);
            if(id == -1){
                return false;
            }else{
                tbm.addFornecedor(fornecedor, new LogradouroDAO().getLogradouro(fornecedor.getLogradouro()));
            }
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
            return false;
        }

    }

    public boolean alterar(int id, String razao, String nome, String cnpj,
            String tel, String ramal, String email, int logradouro, String num, FornecedorTable tbm, int linhaSelecionada) {

        FornecedorMODEL fornecedor = new FornecedorMODEL();
        fornecedor.setId(id);
        fornecedor.setRazaoSocial(razao);
        fornecedor.setNome(nome);
        fornecedor.setCnpj(cnpj);
        fornecedor.setTel(tel);
        fornecedor.setRamal(ramal);
        fornecedor.setEmail(email);
        fornecedor.setLogradouro(logradouro);
        fornecedor.setNum(num);

        try {
            new FornecedorDAO().alterar(fornecedor);
            tbm.updateFornecedor(linhaSelecionada, fornecedor, new LogradouroDAO().getLogradouro(fornecedor.getLogradouro()));
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
            return false;
        }

    }

    public List<FornecedorMODEL> listaFornecedores() {
        List<FornecedorMODEL> fornecedor = new ArrayList<FornecedorMODEL>();
        try {
            fornecedor = new FornecedorDAO().findFornecedores();
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
        }

        return fornecedor;
    }

    public boolean excluir(int id, FornecedorTable tbm, int linhaSelecionada) {
        try {
            new FornecedorDAO().excluir(id);
            tbm.removeFornecedor(linhaSelecionada);
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
            return false;
        }
    }

    public FornecedorMODEL retornaFornecedorPeloCnpj(String cnpj) throws SQLException {
        List<FornecedorMODEL> fornecedor = listaFornecedores();
        for (int i = 0; i < fornecedor.size(); i++) {
            if (fornecedor.get(i).getCnpj().equalsIgnoreCase(cnpj)) {
                return fornecedor.get(i);
            }
        }
        return null;
    }

    public LogradouroMODEL getLougradouro(int cep) {
        LogradouroMODEL log = new LogradouroMODEL();
        try {
            log = new LogradouroDAO().getLogradouro(cep);
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
        }
        return log;
    }

    public FornecedorMODEL findFornecedorById(int id) throws SQLException {
        return new FornecedorDAO().findById(id);
    }

}
